<?php
/**
 * お知らせコンポーネントモジュール
 * <textarea
	name="kanso"
	rows="4"
	cols="40"
>
 */
require_once __DIR__ . '/../ZendPartial.php';

/**
 * お知らせコンポーネントクラス
 * @author hariushi
 */
class Components_NoticeController extends Components_ZendPartial
{
	/** テンプレートファイル名 */
	const NAME_TEMPLATE = 'notice.tpl';
	/** ＨＴＭＬ属性テンプレート：行数 */
	const HTML_TEMPLATE_ROWS = "rows='%d'";
	/** ＨＴＭＬ属性テンプレート：桁数 */
	const HTML_TEMPLATE_COLS = "cols='%d'";
	/** ＨＴＭＬ属性テンプレート：スタイル */
	const HTML_TEMPLATE_STYLE = "style='%s'";

	/** 行数 */
	public $Rows='';
	/** 桁数 */
	public $Cols='';
	/** スタイル */
	public $Style='';
	/** コントロールネーム */
	public $NAME;

	/** カレンダーデータセットオブジェクト */
	protected $_objCalendar;
	/** HTTPリクエストオブジェクト */
	protected $_objHttpRequest;

	/**
	 * コンストラクタ
	 * @param  $objCalendar カレンダーデータセットオブジェクト
	 */
	public function __construct($objCalendar=FALSE)
	{
		parent::__construct(__DIR__);
		$this->_objCalendar = $objCalendar;
		$this->_objHttpRequest = new Lib_Request();
		$this->NAME = Models_Calendar_Controller::KEY_NOTICE;
		$this->view->NAME = $this->NAME;
		$this->_setDefault();
	}

	public function fetch()
	{
		$this->view->ROWS = '';
		$this->view->COLS ='';
		if ($this->Rows != ''){
			$this->view->ROWS = sprintf(self::HTML_TEMPLATE_ROWS, $this->Rows);
		}
		if ($this->Cols != ''){
			$this->view->COLS = sprintf(self::HTML_TEMPLATE_COLS, $this->Cols);
		}
		if ($this->Style != ''){
			$this->view->STYLE = sprintf(self::HTML_TEMPLATE_STYLE, $this->Style);
		}

		$sHtml = parent::fetch(self::NAME_TEMPLATE);
		return $sHtml;
	}

	/**
	 * 初期表示を設定する
	 */
	protected function _setDefault()
	{
		/***
		 *  カレンダーデータセットオブジェクトが設定されていない場合、
		 *  リクエストから初期表示内容を設定する
		 */
		if ($this->_objCalendar === FALSE) {
			$this->view->NOTICE = $this->_objHttpRequest->get(Models_Calendar_Controller::KEY_NOTICE);
			return;
		}

		/*** カレンダーデータセットからおしらせを設定する */
		$this->_setNoticeFromCalendar();
	}

	/**
	 * カレンダーデータセットからおしらせを設定する
	 */
	protected function _setNoticeFromCalendar()
	{
		$this->view->NOTICE = '';
		/*** 予定IDをHTTPリクエストから取得する*/
		$YoteiId = $this->_objHttpRequest->get(Names::YOTEIID);
		/*** 予定ＩＤが設定されていない場合、から文字を設定する */
		if ( $YoteiId == '' ){
			return;
		}
		/*** カレンダーデータセットから予定データセットを取得する */
		$YoteiDataset = $this->_objCalendar->searchId($YoteiId);
		/*** 予定ＩＤに該当するデータセットがない場合、から文字を設定する。 */
		if ( $YoteiDataset === FALSE ) {
			return;
		}
		$this->view->NOTICE = $YoteiDataset[Models_Calendar_Controller::KEY_NOTICE];
	}
}
